1. The Field of the Invention
The present invention generally pertains to computer-generated audio, and more specifically, to a method and system for adjusting reverberation of computer-generated sounds.
2. The Relevant Technology
The tremendous advancements made in computer technology and price/performance over the past few decades has revolutionized computer graphics. For example, early personal computers featured games that provided only monochromatic images, or chalky, low-resolution images including only a few colors at a time. By contrast, today's video games present realistic, three-dimensional images in thousands of colors. Sports games feature likenesses of players that are so accurate and detailed that the players' faces actually can be recognized in the computer animation. In fact, such clarity is possible not only on personal computers, but on video game systems retailing for less than $150. Similarly, movie studios continually expand their use of computer graphics in creating feature films, making the unreal believable. Computer graphics have been used to create increasingly better special effects, as well as entirely computer-generated feature films. Still more films feature live actors in movies where one or more of the other characters are entirely computer-generated, and/or some or all of the backdrops are computer-generated.
In support of improved computer graphics, computer audio hardware systems have improved a great deal. Instead of a single tinny-sounding internal speaker used to generate beeps and monophonic tones in early personal computers, current audio hardware is able to generate high fidelity music and multi-channel surround sound. For example, the Microsoft Corporation's XBOX™ gaming system includes a media communications processor (MCP) with a pair of digital signal processors capable of processing billions of instructions per second. In addition to providing network access and performing other functions, the MCP includes an audio system capable of driving a six-speaker, surround sound audio system. Furthermore, the audio system is capable of precisely controlling audio reverberation for generating three-dimensional audio in conformance with the Interactive Audio Special Interest Group (IASIG) of the MIDI Manufacturers Association Interactive 3D Audio Rendering Guidelines—Level 2.0 Specification (I3DL2). This specification is also recognized by personal computer-based audio systems, such as Microsoft Corporation's DirectSound™ audio specification, as well as by other audio systems.
Audio systems adhering to the I3DL2 specification (and other audio systems) can provide very realistic three-dimensional sound. For example, the I3DL2 specification recognizes twelve different input values that can be set to precisely tailor audio effects, including: ROOM, ROOM_HF, ROOM_ROLLOFF_FACTOR, DECAY_TIME, DECAY_HF_RATIO, REFLECTIONS, REFLECTIONS_DELAY, REVERB, REVERB_DELAY, DIFFUSION, DENSITY, and HF_REFERENCE.
The ROOM value generally adjusts the potential loudness of non-reverb sounds by setting an intensity level and low-pass filter for the room effect, with a value ranging between −10000 mB and 0 mB. The default value is −10000 mB. The ROOM_HF value determines the proportion of reverberation that includes high frequency sounds versus low frequency sounds. More specifically, ROOM_HF specifies the attenuation of reverberation at high frequencies relative to the intensity at low frequencies. ROOM_HF can be a value between −10000 mB and 0 mB. The default value is 0 mB. The ROOM_ROLLOFF_FACTOR value determines how quickly sound intensity attenuates over distance, in the environment. For example, ROOM_ROLLOFF_FACTOR might be used to model an environment consisting of warm, moist air, which squelches sound more quickly than cool, dry air. ROOM_ROLLOFF_FACTOR is a ratio that can include a value between 0.0 and 10.0, and the default value is 0.0.
In addition to these values that control propagation effects of sound, other values more specifically relate to the reverberation of sound. The DECAY_TIME value specifies the decay time of low frequency sounds until the sound becomes inaudible and can be set between 0.1 and 20.0 seconds, with a default value of 1.0 seconds. The DECAY_HF_RATIO value determines how much faster high frequency sounds decay than do low frequency sounds. DECAY_HF_RATIO can be set between 0.1 and 2.0, with a default value of 0.5.
The REFLECTIONS value determines the intensity of initial reflections relative to the ROOM value and can be set between −10000 mB and 1000 mB, with a default value equal to −10000 mB. The REFLECTIONS_DELAY value specifies the delay time of the first sound reflection, relative to the directly received sound and can be set between 0.0 and 0.3 seconds, with a default value of 0.02 seconds. The REVERB value determines the intensity of later reverberations, relative to the ROOM value or, generally, how “wet” the reverberation level is in terms of the overall sound. REVERB can be set to a value between −10000 mB and 2000 mB, and the default value is −10000 mB. The REVERB_DELAY value specifies the time limit between the early reflections and the late reverberation, relative to the time of the first reflection. REVERB_DELAY can be set between 0.0 and 0.1 seconds, with a default value of 0.04 seconds. The DIFFUSION value controls the amplitude intensity of reverberation in the late reverberation decay and can be set between 0.0% and 100.0%, with a default value of 100.0%. The DENSITY value represents the percentage of the modal density in the late reverberation decay, which can be thought of as the portion of surfaces reverberating distinct sounds. Density can be a value between 0.0% and 100.0%, with a default value of 100.0%. Finally, the HF_REFERENCE value sets the delineation point between which sounds are considered high frequency as opposed to low frequency, for purposes of any frequency-based distinction, such as applied in the DECAY_HF_RATIO. HF_REFERENCE can be set anywhere in the audible range between 20.0 Hz and 20,000.0 Hz. The default value is 5000.0 Hz.
Clearly, sound engines recognizing the I3DL2 specification and similar specifications provide software designers and creators tremendous control in tailoring the reverberation of sound to provide a realistic three-dimensional auditory experience. Unfortunately, however, with all of the capabilities provided by the I3DL2 specification and other such specifications, the capability of the audio system and other computer components affecting sound tends to be underutilized. Although systems recognizing the I3DL2 specification provide great control, I3DL2 also imposes a tremendous amount of work for software engineers to determine and set the myriad of values needed to appropriately generate realistic sound effects within a computer-generated environment.
For example, consider a street racing game in which a user controls an automobile as it races around in a city. The track or course followed by the auto will pass through open areas, past buildings, under bridges, and encounter various types of objects. As any driver of an actual automobile will readily understand, objects in the nearby environment affect how the sound generated by the automobile reverberates and how the quality of the sound heard inside the automobile changes as the automobile passes near and past the objects. Thus, to create “believable” reverb effect for sound in such a game, as the automobile is driven around the track, the different parameters provided in the I3DL2 specification all need to be appropriately set—either at spaced apart intervals, or for each object or set of objects encountered by the auto in the virtual environment. This process can literally involve person years to accomplish for a single game. Therefore, unfortunately, when deadlines approach or budgets dwindle as the coding of a game reaches the deadline for completion, the resources devoted to setting these parameters may be reduced or cut. As a result, the quality and realism of the reverb sounds experienced by users of the game may be unsatisfactory, or at least unremarkable.
Not only is setting these reverb parameters incredibly labor intensive, but it also is prone to human bias and error, so that the results can be unpredictable and unrealistic. As a further example, a game might involve a character that moves through different rooms of a building. Creation of the reverb parameters for a single environment might be divided between multiple audio designers. Unfortunately, each of the designers may have different predispositions and preferences regarding the audio quality. As a result, as the character passes from a room configured by a first audio designer to a room configured by a second audio designer, even if the rooms are very similar, the reverberations may be noticeably different. Certainly, in a well-designed game, movement between areas should be as seamless as possible, and significant shifts in audio effects should only occur when moving between significantly different types of spaces. Unwarranted shifts in audio quality thus detract from the realism and the user's appreciation and enjoyment of the game.
Thus, although the capabilities exist in computer systems and gaming systems to provide for realistic three-dimensional audio, the reality of achieving these capabilities may exceed the resources of programmers and designers creating a game or other form of virtual environment. As a result, the dimensional qualities of the audio generated may be somewhat unrealistic.
It would thus be highly desirable to improve the method used for creating computer-generated audio to enable a realistic sound quality to be achieved. Specifically, it would be desirable to simplify the process of setting audio parameters to provide for reverb effects that appropriately match the virtual environment portrayed in the video portion of the computer generation. This approach should greatly reduce the resources, time, and cost involved by eliminating the need for manually setting these parameters. Further, it would be desirable to automatically set the parameters so as to ensure smooth consistent transitions in the sound produced by the computer when moving between different portions of the computer-generated virtual environment.